package seqlist.stack_queue.queue.leetcode;

import java.util.Stack;

/**
 * @author yuisama
 * @date 2023/03/22 20:12
 * 双栈实现队列
 **/
public class Num232_MyQueueByStack {
    // s1永远是存储元素的栈
    private Stack<Integer> s1 = new Stack<>();
    // s2作为辅助
    private Stack<Integer> s2 = new Stack<>();
    public void push(int x) {
        // 先将s1中的所有元素压入s2中，空出s1
        while (!s1.isEmpty()) {
            s2.push(s1.pop());
        }
        // 栈顶就是队尾
        s1.push(x);
        // 再依次将s2中的内容依次弹回s1
        while (!s2.isEmpty()) {
            s1.push(s2.pop());
        }
    }

    public int pop() {
        return s1.pop();
    }

    public int peek() {
        return s1.peek();
    }

    public boolean empty() {
        return s1.isEmpty();
    }
}